// Variables para el manejo de hojas var SHEET_NAME = "Hoja 1"; var ss = SpreadsheetApp.getActiveSpreadsheet(); var hoja = ss.getSheetByName(SHEET_NAME); // Variables obtenidas de funciones por return var e_number; // función para manejar las solicitudes HTTP POST entrantes. Cuando se recibe una solicitud POST, llama a la función handleRepose y le pasa el objeto de solicitud e. function doPost(e){ return handleRepose(e) ; } // Código para crear o obtener una hoja llamada '_Logs' function crearHojaLogs() { // se crea una variable para la hoja de errores, elcódigo comprueba si la hoja ya existe, y si no la inserta. var sheet_log = ss.getSheetByName('_Logs'); if (!sheet_log) { ss.insertSheet('_Logs'); sheet_log = ss.getSheetByName('_Logs'); } // Registramos el número de ejecuciones if (sheet_log.getRange('A1').isBlank()) { sheet_log.getRange('A1').setValue(1); // actualiza el recuento de ejecuciones en la celda A1 de la hoja '_Logs'sumandole 1 } else { sheet_log.getRange('A1').setValue(sheet_log.getRange('A1').getValue() + 1); } // Devuelve el número de ejecución y lo almacena en la variable e_number e_number = sheet_log.getRange('A1').getValue(); return e_number; } // Función para function handleRepose(e) { //llamamos a la función que crea la hoja de errores crearHojaLogs() try{ // Cabecera // La creamos si no existe if(hoja.getRange('A1').isBlank()){ var h_row = []; //contenedor para almacenar con push los nombres de las cabeceras h_row.push("cen"); // current execution number h_row.push("fecha-hora"); h_row.push("nombre"); h_row.push("pulsos"); h_row.push("litros"); h_row.push("mm"); h_row.push("posición"); hoja.getRange(1, 1, 1, h_row.length).setValues([h_row]); } // Parseamos los datos entrantes, que vienen en formato JSON // se explicará como llamar los datos dentro del JSON con mas detalle en otro ejercicio var jsonData = JSON.parse(e.postData.contents); var row = []; row.push(e_number); row.push(new Date()); row.push(jsonData.end_device_ids.device_id); row.push(jsonData.uplink_message.decoded_payload.Last_pulse !== undefined ? jsonData.uplink_message.decoded_payload.Last_pulse.toString().replace('.', ',') : ''); row.push(jsonData.uplink_message.decoded_payload.Water_flow_value !== undefined ? jsonData.uplink_message.decoded_payload.Water_flow_value.toString().replace('.', ',') : ''); hoja.appendRow(row); } catch (err) { // Guardamos los errores que haya podido haber var sheet_log = ss.getSheetByName('_Logs'); sheet_log.appendRow([e_number, err.message]); } }